home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Languguage OS 2
/
Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO
/
language
/
parallax
/
more_exa.tar
/
more
/
X
/
xmandel.p
< prev
next >
Wrap
Text File
|
1992-11-12
|
2KB
|
67 lines
SYSTEM mandelbrot;
(* Iterative Computation of Mandelbrot Set *)
(* With X Window Visualization | Braunl, 1992 *)
CONST n = 64;
max_iter = 15;
col_inc = 255 DIV max_iter;
north = 1.3; south = -1.3;
west = -2.0; east = 0.6;
TYPE complex = RECORD re,im: REAL
END;
CONFIGURATION list [0..n-1],[0..n-1];
CONNECTION (* none *);
SCALAR win_num,col: INTEGER;
ch : CHAR;
VECTOR c, z : complex;
out : BOOLEAN;
PROCEDURE C_Add (VECTOR a,b: complex): VECTOR complex;
VECTOR res: complex;
BEGIN
res.re := a.re + b.re;
res.im := a.im + b.im;
RETURN(res);
END C_Add;
PROCEDURE C_Mul (VECTOR a,b: complex): VECTOR complex;
VECTOR res: complex;
BEGIN
res.re := a.re*b.re - a.im*b.im;
res.im := a.re*b.im + a.im*b.re;
RETURN(res);
END C_Mul;
PROCEDURE C_Col (VECTOR a: complex) : VECTOR BOOLEAN;
BEGIN
RETURN (a.re*a.re + a.im*a.im > 5.0);
END C_Col;
BEGIN
win_num := OpenAbswindow(n,n);
PARALLEL
WITH c DO
re := west + FLOAT(DIM2) * ((east -west )/FLOAT(n-1)); (* real *)
im := south + FLOAT(DIM1) * ((north-south)/FLOAT(n-1)); (* imaginery *)
END;
z:=c;
col := 255; out := FALSE;
WHILE (col > 0) AND NOT out DO
z := C_Add( C_Mul(z,z), c );
out := C_Col(z);
SetColor(COLOR(col, col, col)); (* grayscale *)
SetPixel(DIM2,DIM1); (* fill remaining region *)
dec(col,col_inc);
END;
ENDPARALLEL;
WriteString("Press RETURN for termination"); WriteLn;
Read(ch);
CloseWindow(win_num);
END mandelbrot.